// pages/login/login.js
import { userApi } from '../../utils/api.js'
import { saveUserLoginInfo } from '../../utils/auth.js'

const app = getApp()

Page({
  data: {
    loading: false,
    userInfo: null,
    hasUserInfo: false
  },

  onLoad(options) {
    // 获取重定向URL
    this.redirectUrl = options.redirect ? decodeURIComponent(options.redirect) : ''
    
    // 检查是否已有用户信息
    if (app.globalData.userInfo) {
      this.setData({
        userInfo: app.globalData.userInfo,
        hasUserInfo: true
      })
    }
  },

  onShow() {
    // 页面显示时检查登录状态
    if (app.globalData.userInfo) {
      this.setData({
        userInfo: app.globalData.userInfo,
        hasUserInfo: true
      })
    }
  },

  // 获取用户信息
  async getUserProfile() {
    try {
      const userInfo = await wx.getUserProfile({
        desc: '用于完善用户资料'
      })
      
      this.setData({
        userInfo: userInfo.userInfo,
        hasUserInfo: true
      })
    } catch (error) {
      console.error('获取用户信息失败:', error)
      if (error.errMsg && error.errMsg.includes('auth deny')) {
        wx.showToast({
          title: '需要授权才能使用',
          icon: 'none'
        })
      }
    }
  },

  // 微信登录
  async wxLogin() {
    if (this.data.loading) return

    try {
      this.setData({ loading: true })

      // 获取微信登录code
      const loginRes = await wx.login()
      if (!loginRes.code) {
        throw new Error('获取微信登录code失败')
      }

      // 调用后端登录接口
      const res = await userApi.login({
        code: loginRes.code
      })

      if (res.code === 1) {
        const { id, openid, token } = res.data
        
        // 保存用户登录信息
        const userInfo = {
          id,
          openid,
          ...this.data.userInfo
        }
        
        saveUserLoginInfo(userInfo, token)
        app.setUserInfo(userInfo, token)

        wx.showToast({
          title: '登录成功',
          icon: 'success'
        })

        // 延迟跳转，让用户看到成功提示
        setTimeout(() => {
          this.handleLoginSuccess()
        }, 1500)
      } else {
        throw new Error(res.msg || '登录失败')
      }
    } catch (error) {
      console.error('登录失败:', error)
      wx.showToast({
        title: error.message || '登录失败',
        icon: 'none'
      })
    } finally {
      this.setData({ loading: false })
    }
  },

  // 处理登录成功后的跳转
  handleLoginSuccess() {
    if (this.redirectUrl) {
      // 如果有重定向URL，则跳转到指定页面
      wx.redirectTo({
        url: this.redirectUrl
      })
    } else {
      // 否则跳转到首页
      wx.switchTab({
        url: '/pages/index/index'
      })
    }
  },

  // 跳过登录（游客模式）
  skipLogin() {
    wx.showModal({
      title: '提示',
      content: '游客模式下部分功能无法使用，是否继续？',
      success: (res) => {
        if (res.confirm) {
          wx.switchTab({
            url: '/pages/index/index'
          })
        }
      }
    })
  },

  // 返回上一页
  goBack() {
    const pages = getCurrentPages()
    if (pages.length > 1) {
      wx.navigateBack()
    } else {
      wx.switchTab({
        url: '/pages/index/index'
      })
    }
  }
})
